/// <reference path="../typings/index.d.ts" />
/// <reference path="../src/clientInfoService.ts" />
/// <reference path="../src/tms.ts" />

describe('getClientInfoList',() => {
    var injector:ng.auto.IInjectorService;
    var service:IClientInfoService;

    beforeEach(() => {
        injector = angular.injector(['ng','tms']);
        service = injector.get<IClientInfoService>('clientInfoService');
    });

    //常规无条件获取
    it('get clientInfo list normal',(done) => {
        service.getList(null, null, null, null, 0, 10).then((res) => {
            expect(res.data.total).toBeGreaterThan(0);
            expect(res.data.list.length).toBe(10);
            expect(res.data.extData).toBe('||||0|10');
            done();
        },(err) => {
            done.fail(err);
        });
    });

    //获取企业公司编号包含 1 的客户资料列表
    it('get clientInfo list by enterpriseId \'1\'',(done) => {
        service.getList('1',null,null,null,0,10).then((res) => {
            expect(res.data.total).toBeGreaterThan(0);
            expect(res.data.list.length).toBe(10);
            expect(res.data.extData).toBe('1||||0|10');
            done();
        },(err) => {
            done.fail(err);
        });
    });

    //获取资料名称包含 发货 的客户资料列表
    it('get clientInfo list by name \'发货\'',(done) => {
        service.getList(null,'发货',null,null,0,10).then((res) => {
            expect(res.data.total).toBeGreaterThan(0);
            expect(res.data.list.length).toBe(10);
            expect(res.data.extData).toBe('|发货|||0|10');
            done();
        },(err) => {
            done.fail(err);
        });
    });

   //获取资料类别包含 合同 的客户资料列表
    it('get clientInfo list by infoType \'合同\'',(done) => {
        service.getList(null,null,'合同',null,0,10).then((res) => {
            expect(res.data.total).toBeGreaterThan(0);
            expect(res.data.list.length).toBe(10);
            expect(res.data.extData).toBe('||合同||0|10');
            done();
        },(err) => {
            done.fail(err);
        });
    });

    //获取档案级别包含 一级 的客户资料列表
    it('get clientInfo list by infoLevel \'一级\'',(done) =>{
        service.getList(null,null,null,'一级',0,10).then((res) => {
            expect(res.data.total).toBeGreaterThan(0);
            expect(res.data.list.length).toBe(10);
            expect(res.data.extData).toBe('|||一级|0|10');
            done();
        },(err) => {
            done.fail(err);
        });
    });

    //获取 企业公司编号包含 2,资料名称包含 发货,资料类别包含 合同 ,档案级别包含 一级 的客户资料列表
    it('get clientInfo list by enterpriseId \'2\' and name \'发货\' and infoType \'合同\' and infoLevel \'一级\'',(done) =>{
        service.getList('2','发货','合同','一级',0,10).then((res) => {
            expect(res.data.total).toBe(10);
            expect(res.data.list.length).toBe(10);
            expect(res.data.extData).toBe('2|发货|合同|一级|0|10');
            done();
        },(err) => {
            done.fail(err);
        });
    });

    //获取客户资料详细
    it('get detail',(done)=>{
        service.getDetail('2').then((res)=>{
            expect(res.data.enterpriseCompanyId).toBe("1");
            expect(res.data.name).toBe("detail");
            expect(res.data.infoType).toBe("花");
            expect(res.data.infoLevel).toBe("一级");
            expect(res.data.content).toBe("内容");
            done();
        },(err)=>{
            done.fail(err);
        });
    });

    //添加客户资料
    it('add clientInfo',(done)=>{
        service.add('2','测试客户资料','其他','一级','内容2').then((res)=>{
            expect(res.data.extData).toBe("2|测试客户资料|其他|一级|内容2");
            done();
        },(err)=>{
            done.fail(err);
        });
    });

    //编辑客户资料
    it('edit clientInfo',(done)=>{
        service.edit('2','3','测试客户资料2','其他','二级','内容3').then((res)=>{
            expect(res.data.extData).toBe("2|3|测试客户资料2|其他|二级|内容3");
            done();
        },(err)=>{
            done.fail(err);
        });
    });

    //删除客户资料
    it('delete clientInfo',(done)=>{
        service.delete('1').then((res)=>{
            expect(res.data.extData).toBe("1");
            done();
        },(err)=>{
            done.fail(err);
        });
    });

});